// const AV = require('../../../utils/av-weapp.js')
const pageInterceptor = require('../../../components/pageInterceptor').pageInterceptor;
const api = require('../../../api/api');
const request = require('../../../components/request');
const util = require('../../../utils/util');

/**
 * 二级菜单初始化
 */
// 使用function初始化array，相比var initSubMenuDisplay = [] 既避免的引用复制的，同时方式更灵活，将来可以是多种方式实现，个数也不定的
function initSubMenuDisplay() {
  return ['hidden', 'hidden', 'hidden'];
}

/**
 * 二级菜单是否高亮显示
 */
//定义初始化数据，用于运行时保存
var initSubMenuHighLight = [
  ['', '', '', '', ''],
  ['', ''],
  ['', '', '']
];

// Page({
pageInterceptor({
  data: {
    /**
     * 二级菜单是否显示
     */
    subMenuDisplay: initSubMenuDisplay(),
    /**
     * 二级菜单是否高亮显示
     */
    subMenuHighLight: initSubMenuHighLight,
    /**
     * 商品和对应的图片url列表
     */
    goodsAndImageUrlArray: []
  },
  onLoad: function (options) {
    // 根据分类id，查询产品，并分页显示
    var categoryId = options.categoryId;
    var that = this;
    var url = util.restfulFormat(api.data.prefix + api.data.url.relCategoryImage.findCategoryAndImageUrlById, { categoryId: categoryId });
    request.get(url, null, {
      'content-type': 'application/json',
    }).action((res) => {
      console.log(`接口${api.data.url.relCategoryImage.findCategoryAndImageUrlById}：${JSON.stringify(res)}`);
      that.getGoods(res.data.result.category, 1);
    }).catch(err => {
      console.error(err);
    });
  },
  /**
   * 根据分类id，查找商品，并分页显示
   * @param {*} category 
   * @param {*} pageIndex 
   */
  getGoods: function (category, pageIndex) {
    // 根据分类id
    var that = this;
    request.post(api.data.prefix + api.data.url.goods.page, {
      categoryId: category.id,
      pageSize: 7,
      pageNo: pageIndex
    }, {
      'content-type': 'application/json',
    }).action((res) => {
      console.log(`接口${api.data.url.goods.page}：${JSON.stringify(res)}`);
      // 关闭loading提示框
      wx.hideToast();
      // 让goods结果集迭加
      var originGoodsAndImageUrlArray = that.data.goodsAndImageUrlArray;
      // 如果初始有值，就合并；否则就是新数据集本身
      var newGoodsAndImageUrlArray = originGoodsAndImageUrlArray.length > 0 ? originGoodsAndImageUrlArray.concat(res.data.result.list) : res.data.result.list;
      that.setData({
        goodsAndImageUrlArray: newGoodsAndImageUrlArray
      });
    }).catch(err => {
      console.error(err);
    });
  },
  /**
   * 跳转到详细页面
   * @param {*} e 
   */
  tapGoods: function (e) {
    var objectId = e.currentTarget.dataset.objectId;
    wx.navigateTo({
      url: "../detail/detail?objectId=" + objectId
    });
  },
  /**
   * 点击一级菜单
   * @param {*} e 
   */
  tapMainMenu: function (e) {
    //		获取当前显示的一级菜单标识
    var index = parseInt(e.currentTarget.dataset.index);
    // 生成数组，全为hidden的，只对当前的进行显示
    var newSubMenuDisplay = initSubMenuDisplay();
    //		如果目前是显示则隐藏，反之亦反之。同时要隐藏其他的菜单
    if (this.data.subMenuDisplay[index] == 'hidden') {
      newSubMenuDisplay[index] = 'show';
    } else {
      newSubMenuDisplay[index] = 'hidden';
    }
    // 设置为新的数组
    this.setData({
      subMenuDisplay: newSubMenuDisplay
    });
  },
  /**
   * 点击二级菜单
   * @param {*} e 
   */
  tapSubMenu: function (e) {
    // 隐藏所有二级菜单
    this.setData({
      subMenuDisplay: initSubMenuDisplay()
    });
    // 处理二级菜单，首先获取当前显示的二级菜单标识
    var indexArray = e.currentTarget.dataset.index.split('-');
    // 初始化状态
    // var newSubMenuHighLight = initSubMenuHighLight;
    for (var i = 0; i < initSubMenuHighLight.length; i++) {
      // 如果点中的是一级菜单，则先清空状态，即非高亮模式，然后再高亮点中的二级菜单；如果不是当前菜单，而不理会。经过这样处理就能保留其他菜单的高亮状态
      if (indexArray[0] == i) {
        for (var j = 0; j < initSubMenuHighLight[i].length; j++) {
          // 实现清空
          initSubMenuHighLight[i][j] = '';
        }
        // 将当前菜单的二级菜单设置回去
      }
    }

    // 与一级菜单不同，这里不需要判断当前状态，只需要点击就给class赋予highlight即可
    initSubMenuHighLight[indexArray[0]][indexArray[1]] = 'highlight';
    // 设置为新的数组
    this.setData({
      subMenuHighLight: initSubMenuHighLight
    });
  },
  // onReachBottom: function () {
  //   console.log(`onReachBottom`);
  //   this.getGoods(this.category, 1);
  //   wx.showToast({
  //     title: '加载中',
  //     icon: 'loading'
  //   })
  // },
  // onPullDownRefresh: function () {
  //   console.log(`onPullDownRefresh`);
  //   this.getGoods(this.category, 0);
  // },
  /**
   * 向添加购物车中添加商品
   * @param {*} e 
   */
  addCart: function (e) {
    let id = e.currentTarget.dataset.objectId;
    let userInfo = wx.getStorageSync("userInfo");
    request.post(api.data.prefix + api.data.url.cart.saveOrIncrementCart, {
      userId: userInfo.userId,
      goodsId: id
    }, {
      'content-type': 'application/json',
    }).action((res) => {
      console.log(`接口${api.data.url.cart.saveOrIncrementCart}：${JSON.stringify(res)}`);
      wx.showToast({
        title: '已加入购物车',
        icon: 'success',
        duration: 1000
      });
    }).catch(err => {
      console.error(err);
    });
  }
  // })
}, true)